import Vue from 'vue'
import VueRouter from 'vue-router'
import store from '@/store'
Vue.use(VueRouter)
// 解决重复点击导航时，控制台出现报错
const originalPush = VueRouter.prototype.push
VueRouter.prototype.push = function(to) {
  return originalPush.call(this, to).catch(err => err)
}

// var ctxCom=require.context("../views",true,/\**\.vue$/);
// console.log(ctxCom.keys(),'所有的文件');

// console.log(ctxCom['./movie/index.vue'],'某个组件');


const compContext = require.context("../views", true, /\**\.vue$/);
const comps = compContext.keys().map(key => {
  return {
    key,
    component: compContext(key).default
  }
})

console.log(comps,'pppppp');

const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes:[
    {
      path:'*',
      name:'notfind',
      component:()=>import('@/views/NotFind.vue')
    },
    {
    path:'/login',
    name:'login',
    component:()=>import('@/views/login.vue')
  },
  {
    path:'/reg',
    name:'reg',
    component:()=>import('@/views/register.vue')
  },
  {
    path:'/',
    name:'manage',
    component:()=>import('@/views/manage.vue'),
    meta:{
      title:'首页'
    },
    children:[
      {
        path:'/movie/detail',
        name:'moviedetail',
        component:()=>import('@/views/movie/detail.vue'),
        meta:{
          title:'电影详情'
        }
      },
      {
        path:'/movie/update',
        name:'movieupdate',
        component:()=>import('@/views/movie/update.vue'),
        meta:{
          title:'电影更新'
        }
      },
      {
        path:'/user/update',
        name:'userupdate',
        component:()=>import('@/views/user/update.vue'),
        meta:{
          title:'用户更新'
        }
      },
      // {
      //   path:'/user',
      //   name:'user',
      //   component:()=>import('@/views/user/index.vue'),
      //   meta:{
      //     title:'用户管理'
      //   }
      // },
    
      // {
      //   path:'/user/editpwd',
      //   name:'usereditpwd',
      //   component:()=>import('@/views/user/editpwd.vue'),
      //   meta:{
      //     title:'修改密码'
      //   }
      // },
      // {
      //   path:'/menu',
      //   name:'menu',
      //   component:()=>import('@/views/menu/index.vue'),
      //   meta:{
      //     title:'菜单管理'
      //   }
      // },{
      //   path:'/role',
      //   name:'role',
      //   component:()=>import('@/views/role/index.vue'),
      //   meta:{
      //     title:'角色管理'
      //   }
      // },{
      //   path:'/cinema',
      //   name:'cinema',
      //   component:()=>import('@/views/cinema/index.vue'),
      //   meta:{
      //     title:'影院管理'
      //   }
      // },{
      //   path:'/movie',
      //   name:'movie',
      //   redirect:'/movie/add',
      //   component:()=>import('@/views/movie/index.vue'),
      //   meta:{
      //     title:'电影管理'
      //   },
      //   children:[
      //     {
      //       path:'/movie/list',
      //       name:'movielist',
      //       component:()=>import('@/views/movie/list.vue'),
      //       meta:{
      //         title:'电影列表'
      //       }
      //     },
    
      //     {
      //       path:'/movie/edit',
      //       name:'movieedit',
      //       component:()=>import('@/views/movie/edit.vue'),
      //       meta:{
      //         title:'编辑电影'
      //       }
      //     }
      //   ]
      // }
      // ,{
      //   path:'/order',
      //   name:'order',
      //   component:()=>import('@/views/order/index.vue'),
      //   meta:{
      //     title:'订单管理'
      //   }
      // }

    ]
  }
  ]
})

// 动态的添加路由
console.log(store.state.menuList,'动态获取菜单');
// 注意这里只是在页面刚打开的时候可以执行到 
function addRouterFun(menus){
  menus.forEach((option)=>{
      router.addRoute('manage',{
        path:option.path,
        name:option.name,
        component:()=>import('../'+option.component+'.vue'),
        meta:{
          title:option.title
        }
      })
      if(option.children && option.children.length>0){
         
          addRouterFun(option.children)
      }
  })
}
// 判断是否已经添加过路由了
function isAddRouterFun(curPath){
  let allroutes = router.getRoutes();
  console.log(allroutes,'所有的路由');
 if(curPath=='/'){
    return true;
 }
 let currentObj =  allroutes.find((item)=>{
    return item.path == curPath
  })

  return currentObj;

}
router.beforeEach((to,from,next)=>{
  
 let myObj =  isAddRouterFun(to.path)
 
 if(!myObj) {
    // 添加动态路由
    addRouterFun(store.state.menuList)
    next({
      path:to.path,
      query: to.query,
      replace:true
    })
 }
  next(); // 放行
})

export default router
